<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Organizacion_persona_frm( $this );

	class Organizacion_persona_frm extends Frm
	{
		var $bPersona;
		var $bOrganizacion;

	function Organizacion_persona_frm( &$oModule )
		{
			$this->Frm( $oModule );
			//Crea los Objetos de los campos de edicion
			$this->aFields['ncVisibilidad'] 		= new InputList ( "Visibilidad", "ncVisibilidad" );
			$this->aFields['ncOrganizacion'] 	= new InputLookUp( "Organizacion", "ncOrganizacion" );
			$this->aFields['ncPersona'] 	    = new InputLookUp( "Persona", "ncPersona" );
			$this->aFields['ncArea']   			= new InputList( "Area", "ncArea" );
			$this->aFields['cNombre'] 			= new InputText ( "Nombre", "cNombre" );
			$this->aFields['cApellido'] 			= new InputText ( "Apellido", "cApellido" );
			$this->aFields['cCargo']	        	= new InputText ( "Cargo", "cCargo" );
			$this->aFields['cEmail']				= new InputText( "Email laboral",  "cEmail" );
			$this->aFields['Domicilio']			= new InputArray( "Domicilio", "Domicilio" );
			$this->aFields['cDirecto']				= new InputText( "Directo", "cDirecto" );
			$this->aFields['cCelular']				= new InputText( "Celular", "cCelular" );
			$this->aFields['ncActividad']   		= new InputList( "Actividad", "ncActividad" );
			$this->aFields['Domicilio']->addInput( new InputList( "Domicilio" , "ncDomicilio" ) );
			$this->aFields['Domicilio']->addInput( new InputText( "Piso", "cPiso" ) );
			$this->aFields['Domicilio']->addInput( new InputText( "Of", "cDepto" ) );
			$this->aFields['Domicilio']->addInput( new InputText( "Telefono", "cTelefono" ) );
			$this->aFields['Domicilio']->addInput( new InputText( "Int", "cInterno" ) );
			$this->bOrganizacion = $_GET['bOrganizacion'];
			$this->bPersona = $_GET['bPersona'];
			$this->aFields['ncOrganizacion']->setMandatory( $this->isMandatory() );
			$this->aFields['ncPersona']->setMandatory( $this->isMandatory() );
		}
	function setLevel( $nLevel)
		{
			switch ( $nLevel )
			{
				case 2:
					if ( $this->aFields['ncPersona']->getValue() && $this->aFields['ncOrganizacion']->getValue() )
					{
						$this->aInput = array( 'ncOrganizacion', 'ncPersona', 'ncVisibilidad', 'ncArea', 'cCargo', 'cEmail', 'Domicilio', 'cDirecto', 'cCelular' );
					} else
					{
						$this->aInput = array( 'ncOrganizacion', 'ncPersona' );
					}
				break;
				case 3:
					$this->aInput = array( 'ncOrganizacion', 'cNombre', 'cApellido', 'ncVisibilidad', 'cCargo', 'cEmail', 'Domicilio', 'cDirecto', 'cCelular');
				break;
			}
		}
	function setValue( $ncOrganizacion, $ncPersona )
		{
			if ( $ncOrganizacion && $ncPersona )
			{
				$cSql = "SELECT ncVisibilidad, cCargo, ncArea, cInterno, cDirecto, cCelular, ncDomicilio, ncActividad, ncPersona, cOficina
									FROM atOrganizacionPersona
									WHERE ncOrganizacion = $ncOrganizacion
										AND ncPersona = $ncPersona";
				$aRow = $this->oDatabase->getArray($cSql);
				$this->setFieldsArray ( $aRow );
				$cSql = "SELECT cEmail FROM atPersonaEmail
									WHERE ncOrganizacion = $ncOrganizacion
										AND ncPersona = $ncPersona";
				$this->aFields['cEmail']->setValue( $this->oDatabase->getData($cSql) );
				list( $cPiso , $cDepto ) = explode( "|", $aRow['cOficina'] );
				$this->aFields['Domicilio']->aInput['ncDomicilio']->setValue ( $aRow['ncDomicilio'] );
				$this->aFields['Domicilio']->aInput['cPiso']->setValue ( $cPiso );
				$this->aFields['Domicilio']->aInput['cDepto']->setValue ( $cDepto );
				$this->aFields['Domicilio']->aInput['cInterno']->setValue ( $aRow['cInterno'] );

				return $aRow;
			}
		}
	function initializeForm()
		{
			// Si Recibe la Pk => busca los datos
				if ( $this->isRetrievable() && $this->aFields['ncOrganizacion']->getValue() && $this->aFields['ncPersona']->getValue() )
				{
					$this->setValue( $this->aFields['ncOrganizacion']->getValue(), $this->aFields['ncPersona']->getValue() );
				}
			// Configura el Titulo
				$this->setLabel( "Contacto Laboral" );
			return true;
		}
	function make ( $nOption = '')
	{
		if ( getParam('ncPersona') && getParam('ncOrganizacion') )
		{
			$aRow = $this->setValue ( getParam('ncOrganizacion'), getParam('ncPersona') );
		// Verifica que tenga Permisos
			$ncMiGrupo = obtenerMiGrupo();
			$bPermisoEscritura = ($aRow['ncVisibilidad'] == VISIBILIDAD_PUBLICO || $aRow['ncGrupo'] == $ncMiGrupo);
			if ( !$bPermisoEscritura )
			{
				$bPermisoLectura = ($aRow['ncVisibilidad'] != VISIBILIDAD_PRIVADO || $aRow['ncGrupo'] == $ncMiGrupo);
				if ( $bPermisoLectura )
				{
					$oDet = $this->oModule->loadClass( 'organizacion_persona_lst' );
					$oDet->makeDet();
					return true;
				} else
				{
					addMessage( "No tiene permisos" );
					return false;
				}
			}
		}
		return parent::make( $nOption );
	}
	function initializeField( $cField , &$oField )
		{
			switch ( $cField )
			{
				case 'cCelular':
					$oField->setLength(20);
				break;
				case 'ncVisibilidad':
					$cSql = "SELECT ncVisibilidad, cdVisibilidad FROM acVisibilidad";
					$oField->setDefault( VISIBILIDAD_PUBLICO );
					$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
				break;
				case 'ncOrganizacion':
					$oField->setForm( $this );
					// Configura Organizacion
					if ( !$this->bOrganizacion )
					{
						$oField->setOnChangeAutoSubmit( $this );
						initializeOrganizacion( $oField );
					} elseif ( $oField->getValue()  )
					{
						$cSql = "SELECT cdOrganizacion, cSigla FROM atOrganizacion WHERE ncOrganizacion = " . $oField->getValue();
						list ( $cdOrganizacion , $cSigla ) = $this->oDatabase->getArray( $cSql );
						if ( $cSigla ) $cSigla = " ( $cSigla ) ";
						$oField->setDescription($cdOrganizacion . $cSigla);
						$oField->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_UNA_ORGANIZACION )  );
					}
				break;
				case 'ncActividad':
					if ( !$this->aFields['ncOrganizacion']->isEmpty() )
					{
						$cSql = "SELECT Act.ncActividad, Act.cdActividad
													FROM acActividad as Act
													JOIN atOrganizacionActividad as OAc
														ON OAc.ncActividad = Act.ncActividad
													WHERE OAc.ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue();
						$nqActividades = $this->oDatabase->total($cSql);
						if ( $nqActividades > 1 )
						{
							$oField->setMatrix( $this->oDatabase->getMatrix($cSql) );
						} else
						{
							$oField->setHidden();
						}
					} else
					{
						$oField->setHidden();
					}
				break;
				case 'ncPersona':
					// Configura Persona
					if ( !$this->bPersona )
					{
						$oField->setOnChangeAutoSubmit( $this );
						$oField->setForm( $this );
						initializePersona( $oField , "level=4");
					} elseif ( $oField->getValue()  )
					{
						$cSql = "SELECT cApellido, cNombre FROM atPersona WHERE ncPersona = " . $oField->getValue();
						list ( $cApellido, $cNombre )= $this->oDatabase->getArray( $cSql );
						$oField->setDescription( $cApellido . ', ' .  $cNombre );
						$oField->setForm( $this );
						$oField->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_UNA_PERSONA ) );
					}
				break;
				case 'cCargo':
					$oField->setLength( 100);
				break;
				case 'ncArea':
					if ( !$this->aFields['ncOrganizacion']->isEmpty() )
					{
						$cSql = "SELECT ncArea, cdArea FROM atOrganizacionArea
													WHERE ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue() . " ORDER BY cdArea";
						$oField->setMatrix( $this->oDatabase->getMatrix($cSql)  );
						$oField->setForm( $this );
						$oField->addActionArray( 2, $this->oModule->getActionArray( AGREGAR_AREA ) , "ncOrganizacion=" . $this->aFields['ncOrganizacion']->getValue() );
						$oField->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_AREA ), "ncOrganizacion=" . $this->aFields['ncOrganizacion']->getValue()  );
					}
				break;
				case 'cDirecto':
				case 'cOficina':
					$oField->setLength( 20 );
				break;
				case 'cNombre':
				// Configura el Nombre
					//$oField->setMandatory( $this->isMandatory() );
					$oField->setLength(30);
					//if ( $this->getOptionsLevel() > 1 ) $oField->setOnBlur($this->getVerifyEvent());
				break;
				case 'cApellido':
					//$oField->setMandatory( $this->isMandatory() );
					$oField->setLength(40);
					//if ( $this->getOptionsLevel() > 1 ) $oField->setOnBlur($this->getVerifyEvent());
				break;
				case 'cEmail':
					$oField->setLength( 50 );
					if ( !$this->aFields['ncOrganizacion']->isEmpty() )
					{
						$cPaginaWeb  = $this->oDatabase->getData("SELECT cPaginaWeb FROM atOrganizacion WHERE ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue() );
						if ( $cPaginaWeb  )
						{
							$oField->setDomain( $cPaginaWeb);
						}
					}
				break;
				case 'Domicilio':
					$oField->setLabel('Domicilio', 'D' );
					$oField->aInput['ncDomicilio']-> setMandatory( $this->isMandatory() );
					$oField->aInput['ncDomicilio']-> setWidth(245);
					if ( $this->aFields['ncOrganizacion']->getValue() )
					{
						$cOrganizaciones = $this->aFields['ncOrganizacion']->getValue();
						// Busca los domicilios de los padres organizaciones
						$cSql= "SELECT ncOrganizacionPadre FROM atOrganizacion WHERE ncOrganizacion = " . $this->aFields['ncOrganizacion']->getValue();
						$ncOrganizacionPadre = $this->oDatabase->getData($cSql);
						while ( $ncOrganizacionPadre )
						{
							$cSql= "SELECT ncOrganizacionPadre FROM atOrganizacion WHERE ncOrganizacion = $ncOrganizacionPadre";
							$cOrganizaciones .=  ',' . $ncOrganizacionPadre ;
							$ncOrganizacionPadre = $this->oDatabase->getData($cSql);
						}
						$cSql = "SELECT ncDomicilio	FROM atOrganizacionDomicilio WHERE ncOrganizacion in ( $cOrganizaciones ) " ;
						$aDomicilios = $this->oDatabase->getArray( $cSql );
						$oDomicilio = $this->oModule->loadClass( 'Domicilio_frm' );
						$cJavascript = " var aTelefonos = new Array();  var aPisos = new Array();  var aDeptos= new Array(); ";
						foreach ($aDomicilios as $ncDomicilio )
						{
							$oDomicilio->setValue( $ncDomicilio );
							$cDomicilio = $oDomicilio->getDescription();
							$oField->aInput['ncDomicilio']->addOption ( $ncDomicilio , $cDomicilio );
							$cTelefono = $oDomicilio->aFields['cTelefono']->getValue();
							$cPiso = $oDomicilio->aFields['cPiso']->getValue();
							$cDepto = $oDomicilio->aFields['cDepto']->getValue();
							if ( $cTelefono ) $cJavascript .= "aTelefonos[$ncDomicilio] = \"$cTelefono\";";
							if ( $cPiso ) $cJavascript .= "aPisos[$ncDomicilio] = \"$cPiso\"; ";
							if ( $cDepto ) $cJavascript .= "aDeptos[$ncDomicilio] = \"$cDepto\"; ";
							if ( $ncDomicilio  == $oField->aInput['ncDomicilio']->getValue() )
							{
								$oField->aInput['cTelefono']->setValue( $cTelefono );
								$oField->aInput['cPiso']->setValue( $cPiso );
								if ( $cPiso ) $oField->aInput['cPiso']->setDisabled();
								$oField->aInput['cDepto']->setValue( $cDepto );
								if ( $cDepto ) $oField->aInput['cDepto']->setDisabled();
							}
						}
						$oField->aInput['ncDomicilio']->addActionArray( 2, $this->oModule->getActionArray( AGREGAR_DOMICILIO_A_UNA_ORGANIZACION ) , "ncOrganizacion=" . $this->aFields['ncOrganizacion']->getValue()  );
						$oField->aInput['ncDomicilio']->addActionArray( 3, $this->oModule->getActionArray( MODIFICAR_DOMICILIO_DE_UNA_ORGANIZACION ) , "ncOrganizacion=" . $this->aFields['ncOrganizacion']->getValue() );
						$oField->aInput['ncDomicilio']->setForm( $this );
						$cJavascript .= " oDomicilio    = eval(\"document.". $this->getFormName() . ".ncDomicilio\");
												oPiso            = eval(\"document.". $this->getFormName() . ".cPiso\" );
												oDepto         = eval(\"document.". $this->getFormName() . ".cDepto\" );
												oTelefono		= eval(\"document.". $this->getFormName() . ".cTelefono\" );
												oInterno  		= eval(\"document.". $this->getFormName() . ".cInterno\" );
												nValor = oDomicilio.options[oDomicilio.selectedIndex].value;
												oTelefono.value = ( aTelefonos[nValor] ) ?   aTelefonos[nValor] : \"\" ;
												oInterno.disabled = ! aTelefonos[nValor];
												oPiso.disabled = aPisos[nValor];
												oDepto.disabled = aDeptos[nValor];
												";
						$oField->aInput['ncDomicilio']->setOnChange( $cJavascript);
						$oField->aInput['cPiso']->setLength( 5);
						$oField->aInput['cDepto']->setLength( 5);
						$oField->aInput['cTelefono']->setHidden();
						$cTelefono = $oField->aInput['cTelefono']->getValue();
						if ( $cTelefono )
						{
							$oField->aInput['cInterno']->setLabel("Tel: $cTelefono Int ");
							$oField->aInput['cInterno']->setSize( 5 );
							$oField->aInput['cInterno']->setLength( 20 );
						}
					} else
					{
						//$oField->setHidden();
					}
				break;
			}
		}
	}
?>